package com.doit.spark.day03

import org.apache.log4j.{Level, Logger}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}


/**
 * @DATE 2022/1/6/0:14
 * @Author MDK
 * @Version 2021.2.2
 * */
object C14_分区数 {
  Logger.getLogger("org").setLevel(Level.ERROR)
  def main(args: Array[String]): Unit = {
    //当前所有可用逻辑核数是8,  输入数据是8时,不存在的分区为空,也会打印
    val conf: SparkConf = new SparkConf().setAppName("分区数").setMaster("local[*]")
      .set("spark.default.parallelism", "3")
    val sc = new SparkContext(conf)
    val rdd: RDD[Int] = sc.makeRDD(List[Int](1, 2, 3, 4, 5, 6))

    println("------------------------shuffle前-------------------------------")
    rdd.glom().map(_.toList).foreach(println)


    //减少分区  不增加分区  不进行shuffle  coalesce(numPartitions:Int, shuffle:Boolean=false)
    //增加分区后  不论是否shuffle  对结果没有影响
    println("------------------------shuffle后-------------------------------")
    rdd.coalesce(8,true)
    rdd.glom().map(_.toList).foreach(println)

    println("------------------------shuffle后-------------------------------")
    rdd.repartition(2).glom().map(_.toList).foreach(println)
//    rdd.coalesce(2,true)
//    rdd.glom().map(_.toList).foreach(println)
  }
}
